// import dayjs from 'dayjs'

Page({
  onLoad({ id }) {
    // 如果你进页面有 id  说明 你是编辑
    // 否则  新增

    if (id) {
      // 你得额外做点事
      // 1. 修改标题
      wx.setNavigationBarTitle({
        title: '修改报修信息',
      })

      // 2. 回显
      this.getDetail(id)
    }

    // const res = wx.dayjs(1690356039350).format('YYYY/MM/DD')
    // console.log(res)

    // 无论新增修改 都需要获取审核通过的房屋/获取可供选择的维修项目:
    // 获取用户名下 审核通过的房屋
    this.getHouseList()

    // 获取可供选择的维修项目
    this.getRepairItem()
  },

  async getDetail(id) {
    const { code, data } = await wx.http({
      url: `/repair/${id}`,
    })
    if (code !== 10000) return wx.toast()

    // console.log(data, 999)
    this.setData(data)
  },

  async getHouseList() {
    const { code, data: houseList } = await wx.http({
      url: '/house',
    })
    if (code !== 10000) return wx.toast()
    this.setData({ houseList })
  },

  async getRepairItem() {
    const { code, data: repairItem } = await wx.http({ url: '/repairItem' })
    if (code !== 10000) return wx.toast()

    // console.log(data)
    this.setData({ repairItem })
  },

  data: {
    appointment: '', // 预约事件

    mobile: '',
    description: '',

    // 选择房屋的动作面板 显示隐藏
    houseLayerVisible: false,
    // 待选择的房屋列表
    houseList: [],

    // 选择维修的动作面板 显示隐藏
    repairLayerVisible: false,
    // 待选择的维修项目
    repairItem: [{ name: '水路卫浴' }, { name: '电路灯具' }, { name: '管道疏通' }, { name: '开锁换锁' }],

    currentDate: +new Date(),
    dateLayerVisible: false,

    attachment: [],

    houseId: '',
    repairItemId: '',
  },

  openHouseLayer() {
    this.setData({ houseLayerVisible: true })
  },
  closeHouseLayer() {
    this.setData({ houseLayerVisible: false })
  },
  fn(e) {
    console.log(e.detail)
    this.setData({
      houseInfo: e.detail.name, // 用于页面展示
      houseId: e.detail.id, // 用于提交后端
    })
  },

  openRepairLayer() {
    this.setData({ repairLayerVisible: true })
  },
  closeRepairLayer() {
    this.setData({
      repairLayerVisible: false,
    })
  },
  fn2(e) {
    // console.log(e.detail.name)
    this.setData({
      repairItemName: e.detail.name,
      repairItemId: e.detail.id,
    })
  },

  openDateLayer() {
    this.setData({ dateLayerVisible: true })
  },
  closeDateLayer() {
    this.setData({ dateLayerVisible: false })
  },

  goList() {
    wx.reLaunch({
      url: '/repair_pkg/pages/list/index',
    })
  },

  verifyHouse() {
    const valid = this.data.houseId !== ''
    // 验证结果提示
    if (!valid) wx.toast('请选择房屋信息!')
    // 返回验证结果
    return valid
  },
  verifyRepair() {
    const valid = this.data.repairItemId !== ''
    // 验证结果提示
    if (!valid) wx.toast('请选择维修项目!')
    // 返回验证结果
    return valid
  },
  verifyMobile() {
    // 验证手机号
    const reg = /^[1][3-8][0-9]{9}$/
    const valid = reg.test(this.data.mobile.trim())
    // 验证结果提示
    if (!valid) wx.toast('请填写正确的手机号码!')
    // 返回验证结果
    return valid
  },
  verifyDate() {
    // 验证日期格式
    const reg = /^\d{4}\/\d{2}\/\d{2}$/
    const valid = reg.test(this.data.appointment)
    // 验证结果提示
    if (!valid) wx.toast('请选择预约日期!')
    // 返回验证结果
    return valid
  },
  verifyDescription() {
    // 验证报修项目描述
    const valid = this.data.description.trim() !== ''
    // 验证结果提示
    if (!valid) wx.toast('请填写问题描述!')
    // 返回验证结果
    return valid
  },

  async submit() {
    // 1.校验
    if (!this.verifyHouse()) return
    if (!this.verifyRepair()) return
    if (!this.verifyMobile()) return
    if (!this.verifyDate()) return
    if (!this.verifyDescription()) return

    // 2.请求(不用你判断)
    const { id, houseId, repairItemId, mobile, appointment, description, attachment } = this.data
    const { code } = await wx.http({
      url: '/repair',
      method: 'post',
      data: {
        id,
        houseId,
        repairItemId,
        mobile,
        appointment,
        description,
        attachment,
      },
    })
    if (code !== 10000) return wx.toast()

    // 3.回到列表
    wx.redirectTo({
      url: '/repair_pkg/pages/list/index',
    })

    // 提示会受到页面跳转的影响
    // 提示之间也会互相影响(toast loading)   wechat-http  自带请求中会有 loading 效果
    // wx.toast(`${id ? '编辑' : '新增'}保修成功`)
  },

  getTime(e) {
    // console.log(e.detail) // 这个就是当前选中的时间的时间戳
    // 2022-10-01  2022/10/01
    this.setData({
      appointment: wx.dayjs(e.detail).format('YYYY/MM/DD'),
      dateLayerVisible: false, // 关闭弹层
    })
  },

  afterRead(e) {
    console.log(e.detail.file.tempFilePath) // 选中的图片路径
    // 一会去上传
    wx.uploadFile({
      url: 'https://live-api.itheima.net/upload',
      filePath: e.detail.file.tempFilePath,
      name: 'file',
      header: {
        Authorization: 'Bearer ' + getApp().token,
      },
      // formData: {}
      success: ({ data }) => {
        const { code, data: obj } = JSON.parse(data)
        if (code !== 10000) return wx.toast()

        // console.log(obj) // 上传之后的结果
        this.setData({
          attachment: [...this.data.attachment, obj],
        })
      },
    })
  },
})
